﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//数组的学习

//int main()
//{
//	int a = 10;
//	
//	//数组的类型是去掉变量名之后剩下的
//	int arr[10];//数据类型 ： int [10]
//	return 0;
//}

//int main()
//{
//	//下列两个数组是不一样的
//	int arr[5];//int [5]
//	int arr[6];//int [6]
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	//循环输入
//	for (i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	//循环输出
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}


//int main()
//{
//	int arr[10] = { 0 };
//	int arr[3] = { 1, 3 ,5 };
//	int arr[] = { 1,2,3,4,5,6,7,8,9,0 };//10个元素
//	int arr[] = { 0 };//该数组中有几个元素？  1个
//	return 0;
//}



//%p 是专门用来打印地址的
//特点：16进制的形式打印，同时最前面的0不会省略
//x86 - 32位环境
//x64 - 64位环境
//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("&arr[%d] = %p\n", &arr[i]);
//	}
//
//	return 0;
//}

//strlen - 求字符串长度的，只能针对字符串

//int main()
//{
//	int arr[10] = { 1,2,3,4,5 };
//	printf("%zd\n", sizeof(arr));//40 sizeof(数组名) - 计算的是整个数组的单位是字节
//	printf("%zd\n", sizeof(int[10]));// 40
//	printf("%zd\n", sizeof(arr[0]));//计算的是一个数组元素占据空的大小，单位是字节
//	printf("%zd\n", sizeof(arr) / sizeof(arr[0]));
//	return 0;
//}

//sizeof计算数组元素个数：sizeof中C语言是一个关键字，是可以计算类型或者变量大小的，
//其实sizeof也可以计算数组的大小
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6 };
//	int sz = sizeof(arr) / sizeof(arr[0]);//计算数组的大小
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//二维数组
//int main()
//{
//	int arr[3][5] = { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}


//二维数组的输入和输出
//int main()
//{
//	int arr[3][5] = {0};
//	int i = 0;
//	//键盘输入
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			scanf("%d", &arr[i][j]);
//		}
//	}
//
//	//输出
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//
//	return 0;
//}


//结论：二维数组在内存中也是连续存储的，一行存完，存下一行。
//// 这也表明：行数可以省略，列数不能省略
//int main()
//{
//	int arr[3][5] = { 0 };
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("&arr[%d][%d] = %p\n", i,j,&arr[i][j]);
//		}
//	}
//	return 0;
//}


#include <stdlib.h>
#include <string.h>
#include <windows.h>
//int right = strlen(arr) - 1;
// int right = strlen(arr) - 2;
// sizeof 计算的是数组所占内存空间的大小，单位是字节
// strlen求的是字符串的长度，统计的是字符串中\0之前的字符的个数
//练习
//int main()
//{
//	char arr1[] = "welcome to bit!!!!!";
//	char arr2[] = "###################";
//	int left = 0;
//	int right = strlen(arr1) - 1;
//	while (left <= right)
//	{
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		printf("%s\n", arr2);
//		Sleep(1000);//单位是毫秒
//		system("cls");//清屏
//		left++;
//		right--;
//	}
//	printf("%s\n", arr2);
//	return 0;
//}

//题目:在一个有序的数组中查找指定的数，是否存在，如果存在返回该数的下标，否则返回不存在
//int main()
//{
//	int k = 0;
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	scanf("%d", &k);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		if (k == arr[i])
//		{
//			printf("%d\n", i);
//			break;
//		}
//	}
//	if (k == sz)
//	{
//		printf("不存在\n");
//	}
//
//	return 0;
//}

//#include <stdlib.h>
//#include <string.h>
//二分查找/折半查找
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int k = 0;
//	scanf("%d", &k);
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int left = 0;
//	int right = sz - 1;
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] > k)
//			right = mid - 1;
//		else if (arr[mid] < k)
//			left = mid + 1;
//		else
//		{
//			printf("找到了，下标为：%d\n", mid);
//			break;
//		}
//	}
//	if (left > right)
//	{
//		printf("找不到\n");
//	}
//	return 0;
//}

//#include <string.h>
//#include <stdlib.h>
//int main()
//{
//	char arr1[] = "welcome to bit!!!!";
//	char arr2[] = "##################";
//	int left = 0;
//	int right = strlen(arr1) - 1;
//	while (left <= right)
//	{
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		printf("%s\n", arr2);
//		Sleep(1000);
//		system("cls");
//		left++;
//		right--;
//	}
//	printf("%s\n", arr2);
//	return 0;
//}


//int main()
//{
//	char acx[] = "abcdefg";
//	char acy[] = { 'a','b','c','d','e','f','g' };
//	printf("%zd\n", sizeof(acx));//8
//	printf("%zd\n", sizeof(acy));//7
//	printf("%zd\n", strlen(acx));//7
//	printf("%zd\n", strlen(acy));//42
//	return 0;
//}

//int main()
//{
//	int arr[] = {1,2,(3,4),5};//逗号表达式只计算最后一个值
//	printf("%d\n", sizeof(arr));
//	return 0;
//}

//int main()
//{
//	char str[] = "hello bit";
//	//sizeof()  是C语言中的一个单目运算符，用来计算数据类型所占空间的大小，包含了结束符'\0'的位置。单位是字节
//	//strlen()  是一个函数，用来计算字符串的实际长度，即不包括'\0'在内的实际字符的长度
//	printf("%d %d\n", sizeof(str), strlen(str));//10 9
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//
//int main() {
//    char arr[20][20] = { 0 };
//    int i = 0;
//    for (i = 0; i < 20; i++)
//    {
//        int j = 0;
//        for (j = 0; j < 20; j++)
//        {
//            if (i == 0 || i == 19)
//            {
//                printf("%s ", "*");
//            }
//            else if(j == 0 || j == 19)
//            {
//                printf("%s ", "*");
//            }
//            else
//            {
//                printf("%s ", " ");
//            }
//            
//        }
//        printf("\n");
//    }
//    return 0;
//}


//【一维数组】输入10个整数，求平均值
//int main()
//{
//	int arr[10];
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	int sum = 0;
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	for (i = 0; i < sz; i++)
//	{
//		sum += arr[i];
//	}
//	int avg = sum / sz;
//	printf("avg = %d\n", avg);
//	return 0;
//}


//交换两个数组
//将数组A中的内容和数组B中的内容进行交换。（数组一样大）
//int main()
//{
//	int arr1[5] = { 1,2,3,4,5 };
//	int arr2[5] = { 6,7,8,9,10 };
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//	int i = 0;
//	//交换两个数组中的每个元素
//	for (i = 0; i < sz; i++)
//	{
//		int temp = arr1[i];
//		arr1[i] = arr2[i];
//		arr2[i] = temp;
//		
//	}
//	//输出数组arr1
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr1[i]);
//	}
//	printf("\n");
//	//输出数组arr2
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//	return 0;
//}

//输入三个整数，将三个整数从大到小输出
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d %d %d", &a, &b, &c);
//	if (a < b)
//	{
//		int temp = a;
//		a = b;
//		b = temp;
//	}
//	if (a < c)
//	{
//		int temp = a;
//		a = c;
//		c = temp;
//	}
//	if (b < c)
//	{
//		int temp = b;
//		b = c;
//		c = temp;
//	}
//	//输出
//	printf("%d %d %d\n", a, b, c);
//	return 0;
//}

//int main()
//{
//	int count = 0;
//	int i = 0;
//	for (i = 0; i <= 100; i++)
//	{
//		if (i / 10 == 9)
//		{
//			count++;
//		}
//		else if (i % 10 == 9)
//		{
//			count++;
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int num = 0;
//    printf("请输入一个整数：\n");
//    scanf("%d", &num);
//    if (num % 2 == 0)
//    {
//        printf("偶数\n");
//        printf("能被2整除\n");
//    }
//    else
//    {
//        printf("奇数\n");
//        printf("不能被2整除\n");
//    }
//
//    printf("\n");
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int score = 0;
//	printf("请输入一个成绩：\n");
//	scanf("%d", &score);
//	if (score <= 100 && score >= 90)
//	{
//		printf("优秀\n");
//	}
//	else if (score < 90 && score >= 70)
//	{
//		printf("良好\n");
//	}
//	else if (score < 70 && score >= 60)
//	{
//		printf("及格\n");
//	}
//	else if(score < 60 && score >= 0)
//	{
//		printf("不及格\n");
//	}
//	else
//	{
//		printf("输入有误\n");
//	}
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int score = 79;
//	if (score >= 80)
//	{
//		if (score == 96)
//			printf("学无止尽\n");
//		else
//			printf("再接再厉\n");
//	}
//
//	return 0;
//}

//#include <stdio.h>
//int main(){
//	int score = 0;
//	scanf("%d", &score);
//	if (score <= 100 && score >= 90)
//	{
//		printf("优秀\n");
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int score = 0;
//    printf("请输入一个成绩:\n");
//    scanf("%d", &score);
//    if (score >= 60 && score <= 100)
//    {
//        printf("不挂科\n");
//    }
//    else if (score >= 0 && score < 60)
//    {
//        printf("挂科\n");
//    }
//    return 0;
//}

//#include <stdio.h>
//int main()
//{
//    int month = 0;
//    scanf("%d", &month);
//    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 9 || month == 10 || month == 12)
//    {
//        printf("%d月有31天\n",month);
//    }
//    return 0;
//}


#include <stdio.h>

//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	switch (num % 3)
//	{
//		case 0:
//			printf("整除，余数为0\n");
//		case 1:
//			printf("余数为1\n");
//		case 2:
//			printf("余数为2\n");
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int day = 0;
//	scanf("%d", &day);
//	switch(day)
//	{
//		case 1:
//			printf("星期一\n");
//			break;
//		case 2:
//			printf("星期二\n");
//			break;
//		case 3:
//			printf("星期三\n");
//			break;
//		case 4:
//			printf("星期四\n");
//			break;
//		case 5:
//			printf("星期五\n");
//			break;
//		case 6:
//			printf("星期六\n");
//			break;
//		case 7:
//			printf("星期日\n");
//			break;
//		default:printf("输入有误\n");
//			break;
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int day = 0;
//	scanf("%d", &day);
//	switch (day)
//	{
//	case 1:
//	case 2:
//	case 3:
//	case 4:
//	case 5:
//		printf("工作日\n");
//		break;
//	case 6:
//	case 7:
//		printf("休息日\n");
//		break;
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	while (n != 0)
//	{
//		printf("hello world\n");
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	while (i < 100)
//	{
//		i += 2;
//		printf("%d ", i);
//	}
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	while (num != 0)
//	{
//		printf("%d ", num % 10);
//		num = num / 10;
//	}
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int sum = 0;
//	int i = 0;
//	for (i = 5; i <= 100; i+=5)
//	{
//		//if(i % 5 == 0)
//			sum += i;
//	}
//	printf("%d\n", sum);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	int sum = 0;
//	for (i = 1; i <= 100; i++)
//	{
//		if (i % 3 == 0)
//			sum += i;
//	}
//	printf("%d\n", sum);
//	return 0;
//}
//⼩⼩的优化
//如果能直接产⽣3的倍数的数字就省去了多余的循环和判断
//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	int sum = 0;
//	for (i = 3; i <= 100; i += 3)
//	{
//		sum += i;
//	}
//	printf("%d\n", sum);
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	do
//	{
//		printf("%d ", i);
//		i += 1;
//	} while (i <= 100);
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	int count = 0;
//	do
//	{
//		num = num / 10;
//		count++;
//	} while (num != 0);
//	printf("%d\n", count);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	do
//	{
//		if (i == 8)
//			break;
//		printf("%d ", i);
//		i++;
//	}while (i <= 10);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	for (i = 1; i <= 10; i++)
//	{
//		if (i == 8)
//			continue;
//		printf("%d ", i);
//	}
//	return 0;
//}



